home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / UTILITIE / CONVERSI / 3760.ZIP / APL2EM.ZIP / DEBUG.ASM < prev    next >
Assembly Source File  |  1990-04-02  |  33KB  |  827 lines

  1.     Page    58,132
  2.     Title    DEBUG.ASM    Apple Emulator Debugger
  3. ;******************************************************************************
  4. ;
  5. ;   Name:    DEBUG.ASM    Apple Emulator Debugger
  6. ;
  7. ;   Group:    Emulator
  8. ;
  9. ;   Revision:    1.00
  10. ;
  11. ;   Date:    January 30, 1988
  12. ;
  13. ;   Author:    Randy W. Spurlock
  14. ;
  15. ;******************************************************************************
  16. ;
  17. ;  Module Functional Description:
  18. ;
  19. ;        This module contains all the code for the Apple
  20. ;    emulator resident debugger.
  21. ;
  22. ;******************************************************************************
  23. ;
  24. ;  Changes:
  25. ;
  26. ;    DATE     REVISION                DESCRIPTION
  27. ;  --------   --------    -------------------------------------------------------
  28. ;   1/30/88    1.00    Original
  29. ;
  30. ;******************************************************************************
  31.     Page
  32. ;
  33. ;  Public Declarations
  34. ;
  35.     Public    Debug            ; Apple emulator resident debugger
  36. ;
  37. ;  External Declarations
  38. ;
  39. ;    extrn                ;                (     )
  40. ;
  41. ;  LOCAL Equates
  42. ;
  43. ;        Equ      h        ;
  44. ;
  45. ;  Define any include files needed
  46. ;
  47.     Include     Macros.inc    ; Include the macro definitions
  48.     Include     Equates.inc    ; Include the equate definitions
  49.     Include     StrucS.inc    ; Include the structure definitions
  50.     .286c                ; Include 80286 instructions
  51.     Page
  52. ;
  53. ;  Define the emulator code segment
  54. ;
  55. Emulate Segment Word Public 'EMULATE'   ; Emulator code segment
  56.     Assume    cs:Emulate, ds:Nothing, es:Nothing
  57.     Subttl    Debug        Apple Emulator Debugger
  58.     Page    +
  59. ;******************************************************************************
  60. ;
  61. ;    Debug(RAM_Space, Registers)
  62. ;
  63. ;        Save the required registers
  64. ;
  65. ;        Restore the required registers
  66. ;        Return to the caller
  67. ;
  68. ;    Registers on Entry:
  69. ;
  70. ;        DL    - 65C02 Accumulator
  71. ;        DH    - 65C02 processor flags
  72. ;        CL    - 65C02 Y index register
  73. ;        CH    - 65C02 X index register
  74. ;        BX    - 65C02 Stack pointer
  75. ;        SI    - 65C02 Program counter
  76. ;        DS    - 65C02 RAM space
  77. ;
  78. ;    Registers on Exit:
  79. ;
  80. ;        None
  81. ;
  82. ;******************************************************************************
  83.         Even            ; Force procedure to even address
  84. Debug        Proc    Near        ; Apple emulator debugger procedure
  85.  
  86.     ret                ; Return to the caller
  87. Debug        Endp            ; End of the Debug procedure
  88.     Subttl    Do_BAD        Bad Addressing Mode Routine
  89.     Page    +
  90. ;******************************************************************************
  91. ;
  92. ;    Do_BAD()
  93. ;
  94. ;        Save the required registers
  95. ;
  96. ;        Restore the required registers
  97. ;        Return to the caller
  98. ;
  99. ;    Registers on Entry:
  100. ;
  101. ;        None
  102. ;
  103. ;    Registers on Exit:
  104. ;
  105. ;        None
  106. ;
  107. ;******************************************************************************
  108.         Even            ; Force procedure to even address
  109. Do_BAD        Proc    Near        ; Bad addressing mode procedure
  110.  
  111.     ret                ; Return to the caller
  112. Do_BAD        Endp            ; End of the Do_BAD procedure
  113.     Subttl    Do_NONE     No Addressing Mode Routine
  114.     Page    +
  115. ;******************************************************************************
  116. ;
  117. ;    Do_NONE()
  118. ;
  119. ;        Save the required registers
  120. ;
  121. ;        Restore the required registers
  122. ;        Return to the caller
  123. ;
  124. ;    Registers on Entry:
  125. ;
  126. ;        None
  127. ;
  128. ;    Registers on Exit:
  129. ;
  130. ;        None
  131. ;
  132. ;******************************************************************************
  133.         Even            ; Force procedure to even address
  134. Do_NONE     Proc    Near        ; No addressing mode procedure
  135.  
  136.     ret                ; Return to the caller
  137. Do_NONE     Endp            ; End of the Do_NONE procedure
  138.     Subttl    Do_IMM        Immediate Addressing Mode Routine
  139.     Page    +
  140. ;******************************************************************************
  141. ;
  142. ;    Do_IMM()
  143. ;
  144. ;        Save the required registers
  145. ;
  146. ;        Restore the required registers
  147. ;        Return to the caller
  148. ;
  149. ;    Registers on Entry:
  150. ;
  151. ;        None
  152. ;
  153. ;    Registers on Exit:
  154. ;
  155. ;        None
  156. ;
  157. ;******************************************************************************
  158.         Even            ; Force procedure to even address
  159. Do_IMM        Proc    Near        ; Immediate addressing mode procedure
  160.  
  161.     ret                ; Return to the caller
  162. Do_IMM        Endp            ; End of the Do_IMM procedure
  163.     Subttl    Do_ABS        Absolute Addressing Mode Routine
  164.     Page    +
  165. ;******************************************************************************
  166. ;
  167. ;    Do_ABS()
  168. ;
  169. ;        Save the required registers
  170. ;
  171. ;        Restore the required registers
  172. ;        Return to the caller
  173. ;
  174. ;    Registers on Entry:
  175. ;
  176. ;        None
  177. ;
  178. ;    Registers on Exit:
  179. ;
  180. ;        None
  181. ;
  182. ;******************************************************************************
  183.         Even            ; Force procedure to even address
  184. Do_ABS        Proc    Near        ; Absolute addressing mode procedure
  185.  
  186.     ret                ; Return to the caller
  187. Do_ABS        Endp            ; End of the Do_ABS procedure
  188.     Subttl    Do_DP        Direct Page Addressing Mode Routine
  189.     Page    +
  190. ;******************************************************************************
  191. ;
  192. ;    Do_DP()
  193. ;
  194. ;        Save the required registers
  195. ;
  196. ;        Restore the required registers
  197. ;        Return to the caller
  198. ;
  199. ;    Registers on Entry:
  200. ;
  201. ;        None
  202. ;
  203. ;    Registers on Exit:
  204. ;
  205. ;        None
  206. ;
  207. ;******************************************************************************
  208.         Even            ; Force procedure to even address
  209. Do_DP        Proc    Near        ; Direct page addressing mode procedure
  210.  
  211.     ret                ; Return to the caller
  212. Do_DP        Endp            ; End of the Do_DP procedure
  213.     Subttl    Do_DIX        Direct Page Indexed X Addressing Mode Routine
  214.     Page    +
  215. ;******************************************************************************
  216. ;
  217. ;    Do_DIX()
  218. ;
  219. ;        Save the required registers
  220. ;
  221. ;        Restore the required registers
  222. ;        Return to the caller
  223. ;
  224. ;    Registers on Entry:
  225. ;
  226. ;        None
  227. ;
  228. ;    Registers on Exit:
  229. ;
  230. ;        None
  231. ;
  232. ;******************************************************************************
  233.         Even            ; Force procedure to even address
  234. Do_DIX        Proc    Near        ; Direct page indexed X procedure
  235.  
  236.     ret                ; Return to the caller
  237. Do_DIX        Endp            ; End of the Do_DIX procedure
  238.     Subttl    Do_DIY        Direct Page Indexed Y Addressing Mode Routine
  239.     Page    +
  240. ;******************************************************************************
  241. ;
  242. ;    Do_DIY()
  243. ;
  244. ;        Save the required registers
  245. ;
  246. ;        Restore the required registers
  247. ;        Return to the caller
  248. ;
  249. ;    Registers on Entry:
  250. ;
  251. ;        None
  252. ;
  253. ;    Registers on Exit:
  254. ;
  255. ;        None
  256. ;
  257. ;******************************************************************************
  258.         Even            ; Force procedure to even address
  259. Do_DIY        Proc    Near        ; Direct page indexed Y procedure
  260.  
  261.     ret                ; Return to the caller
  262. Do_DIY        Endp            ; End of the Do_DIY procedure
  263.     Subttl    Do_AIX        Absolute Indexed X Addressing Mode Routine
  264.     Page    +
  265. ;******************************************************************************
  266. ;
  267. ;    Do_AIX()
  268. ;
  269. ;        Save the required registers
  270. ;
  271. ;        Restore the required registers
  272. ;        Return to the caller
  273. ;
  274. ;    Registers on Entry:
  275. ;
  276. ;        None
  277. ;
  278. ;    Registers on Exit:
  279. ;
  280. ;        None
  281. ;
  282. ;******************************************************************************
  283.         Even            ; Force procedure to even address
  284. Do_AIX        Proc    Near        ; Absolute indexed X procedure
  285.  
  286.     ret                ; Return to the caller
  287. Do_AIX        Endp            ; End of the Do_AIX procedure
  288.     Subttl    Do_AIY        Absolute Indexed Y Addressing Mode Routine
  289.     Page    +
  290. ;******************************************************************************
  291. ;
  292. ;    Do_AIY()
  293. ;
  294. ;        Save the required registers
  295. ;
  296. ;        Restore the required registers
  297. ;        Return to the caller
  298. ;
  299. ;    Registers on Entry:
  300. ;
  301. ;        None
  302. ;
  303. ;    Registers on Exit:
  304. ;
  305. ;        None
  306. ;
  307. ;******************************************************************************
  308.         Even            ; Force procedure to even address
  309. Do_AIY        Proc    Near        ; Absolute indexed Y procedure
  310.  
  311.     ret                ; Return to the caller
  312. Do_AIY        Endp            ; End of the Do_AIY procedure
  313.     Subttl    Do_AI        Absolute Indirect Addressing Mode Routine
  314.     Page    +
  315. ;******************************************************************************
  316. ;
  317. ;    Do_AI()
  318. ;
  319. ;        Save the required registers
  320. ;
  321. ;        Restore the required registers
  322. ;        Return to the caller
  323. ;
  324. ;    Registers on Entry:
  325. ;
  326. ;        None
  327. ;
  328. ;    Registers on Exit:
  329. ;
  330. ;        None
  331. ;
  332. ;******************************************************************************
  333.         Even            ; Force procedure to even address
  334. Do_AI        Proc    Near        ; Absolute indirect procedure
  335.  
  336.     ret                ; Return to the caller
  337. Do_AI        Endp            ; End of the Do_AI procedure
  338.     Subttl    Do_DI        Direct Page Indirect Addressing Mode Routine
  339.     Page    +
  340. ;******************************************************************************
  341. ;
  342. ;    Do_DI()
  343. ;
  344. ;        Save the required registers
  345. ;
  346. ;        Restore the required registers
  347. ;        Return to the caller
  348. ;
  349. ;    Registers on Entry:
  350. ;
  351. ;        None
  352. ;
  353. ;    Registers on Exit:
  354. ;
  355. ;        None
  356. ;
  357. ;******************************************************************************
  358.         Even            ; Force procedure to even address
  359. Do_DI        Proc    Near        ; Direct page indirect procedure
  360.  
  361.     ret                ; Return to the caller
  362. Do_DI        Endp            ; End of the Do_DI procedure
  363.     Subttl    Do_AIIX     Absolute Indexed Indirect X Addressing Routine
  364.     Page    +
  365. ;******************************************************************************
  366. ;
  367. ;    Do_AIIX()
  368. ;
  369. ;        Save the required registers
  370. ;
  371. ;        Restore the required registers
  372. ;        Return to the caller
  373. ;
  374. ;    Registers on Entry:
  375. ;
  376. ;        None
  377. ;
  378. ;    Registers on Exit:
  379. ;
  380. ;        None
  381. ;
  382. ;******************************************************************************
  383.         Even            ; Force procedure to even address
  384. Do_AIIX     Proc    Near        ; Absolute indexed indirect X procedure
  385.  
  386.     ret                ; Return to the caller
  387. Do_AIIX     Endp            ; End of the Do_AIIX procedure
  388.     Subttl    Do_DIIX     Direct Page Indexed Indirect X Mode Routine
  389.     Page    +
  390. ;******************************************************************************
  391. ;
  392. ;    Do_DIIX()
  393. ;
  394. ;        Save the required registers
  395. ;
  396. ;        Restore the required registers
  397. ;        Return to the caller
  398. ;
  399. ;    Registers on Entry:
  400. ;
  401. ;        None
  402. ;
  403. ;    Registers on Exit:
  404. ;
  405. ;        None
  406. ;
  407. ;******************************************************************************
  408.         Even            ; Force procedure to even address
  409. Do_DIIX     Proc    Near        ; Direct indexed indirect X procedure
  410.  
  411.     ret                ; Return to the caller
  412. Do_DIIX     Endp            ; End of the Do_DIIX procedure
  413.     Subttl    Do_DIIY     Direct Page Indexed Indirect Y Mode Routine
  414.     Page    +
  415. ;******************************************************************************
  416. ;
  417. ;    Do_DIIY()
  418. ;
  419. ;        Save the required registers
  420. ;
  421. ;        Restore the required registers
  422. ;        Return to the caller
  423. ;
  424. ;    Registers on Entry:
  425. ;
  426. ;        None
  427. ;
  428. ;    Registers on Exit:
  429. ;
  430. ;        None
  431. ;
  432. ;******************************************************************************
  433.         Even            ; Force procedure to even address
  434. Do_DIIY     Proc    Near        ; Direct indexed indirect Y procedure
  435.  
  436.     ret                ; Return to the caller
  437. Do_DIIY     Endp            ; End of the Do_DIIY procedure
  438.     Subttl    Do_PCR        Program Counter Relative Addressing Routine
  439.     Page    +
  440. ;******************************************************************************
  441. ;
  442. ;    Do_PCR()
  443. ;
  444. ;        Save the required registers
  445. ;
  446. ;        Restore the required registers
  447. ;        Return to the caller
  448. ;
  449. ;    Registers on Entry:
  450. ;
  451. ;        None
  452. ;
  453. ;    Registers on Exit:
  454. ;
  455. ;        None
  456. ;
  457. ;******************************************************************************
  458.         Even            ; Force procedure to even address
  459. Do_PCR        Proc    Near        ; PC relative addressing procedure
  460.  
  461.     ret                ; Return to the caller
  462. Do_PCR        Endp            ; End of the Do_PCR procedure
  463. ;******************************************************************************
  464. ;
  465. ;    Define the 65C02 debugger addressing table
  466. ;
  467. ;******************************************************************************
  468.     Even                ; Force table to an even address
  469. Address_Table    Equ    This Word    ; 65C02 Opcode addressing table
  470.     Address BAD,Do_BAD        ; Illegal opcode addressing type
  471.     Address NONE,Do_None        ; No addressing type
  472.     Address IMM,Do_IMM        ; Immediate addressing type
  473.     Address ABS,Do_ABS        ; Absolute addressing type
  474.     Address DP,Do_DP        ; Direct page addressing type
  475.     Address DIX,Do_DIX        ; Direct page indexed with X type
  476.     Address DIY,Do_DIY        ; Direct page indexed with Y type
  477.     Address AIX,Do_AIX        ; Absolute indexed with X type
  478.     Address AIY,Do_AIY        ; Absolute indexed with Y type
  479.     Address AI,Do_AI        ; Absolute indirect addressing type
  480.     Address DI,Do_DI        ; Direct page indirect addressing type
  481.     Address AIIX,Do_AIIX        ; Absolute indexed indirect X type
  482.     Address DIIX,Do_DIIX        ; Direct page indexed indirect X type
  483.     Address DIIY,Do_DIIY        ; Direct page indexed indirect Y type
  484.     Address PCR,Do_PCR        ; Program counter relative
  485. ;******************************************************************************
  486. ;
  487. ;    Define the 65C02 debugger mnemonic table
  488. ;
  489. ;******************************************************************************
  490.     Even                ; Force table to an even address
  491. Mnemonic_Table    Equ    This Byte    ; 65C02 Opcode mnemonic table
  492.     Mnemonic    ADC,<"ADC">     ; Add with carry mnemonic
  493.     Mnemonic    AND,<"AND">     ; AND accumulator mnemonic
  494.     Mnemonic    ASL,<"ASL">     ; Arithmetic shift left mnemonic
  495.     Mnemonic    BAD,<"DB ">     ; Illegal opcode mnemonic
  496.     Mnemonic    BCC,<"BCC">     ; Branch if carry clear mnemonic
  497.     Mnemonic    BCS,<"BCS">     ; Branch if carry set mnemonic
  498.     Mnemonic    BEQ,<"BEQ">     ; Branch if equal mnemonic
  499.     Mnemonic    BIT,<"BIT">     ; Test bits mnemonic
  500.     Mnemonic    BMI,<"BMI">     ; Branch if minus mnemonic
  501.     Mnemonic    BNE,<"BNE">     ; Branch if not equal mnemonic
  502.     Mnemonic    BPL,<"BPL">     ; Branch if plus mnemonic
  503.     Mnemonic    BRA,<"BRA">     ; Branch always mnemonic
  504.     Mnemonic    BRK,<"BRK">     ; Software break mnemonic
  505.     Mnemonic    BVC,<"BVC">     ; Branch if overflow clear mnemonic
  506.     Mnemonic    BVS,<"BVS">     ; Branch if overflow set mnemonic
  507.     Mnemonic    CLC,<"CLC">     ; Branch if carry clear mnemonic
  508.     Mnemonic    CLD,<"CLD">     ; Clear decimal mode mnemonic
  509.     Mnemonic    CLI,<"CLI">     ; Clear interrupt disable mnemonic
  510.     Mnemonic    CLV,<"CLV">     ; Clear overflow mnemonic
  511.     Mnemonic    CMP,<"CMP">     ; Compare accumulator mnemonic
  512.     Mnemonic    CPX,<"CPX">     ; Compare X register mnemonic
  513.     Mnemonic    CPY,<"CPY">     ; Compare Y register mnemonic
  514.     Mnemonic    DEC,<"DEC">     ; Decrement mnemonic
  515.     Mnemonic    DEX,<"DEX">     ; Decrement X register mnemonic
  516.     Mnemonic    DEY,<"DEY">     ; Decrement Y register mnemonic
  517.     Mnemonic    EOR,<"EOR">     ; XOR with accumulator mnemonic
  518.     Mnemonic    INC,<"INC">     ; Increment mnemonic
  519.     Mnemonic    INX,<"INX">     ; Increment X register mnemonic
  520.     Mnemonic    INY,<"INY">     ; Increment Y register mnemonic
  521.     Mnemonic    JMP,<"JMP">     ; Jump mnemonic
  522.     Mnemonic    JSR,<"JSR">     ; Jump to subroutine mnemonic
  523.     Mnemonic    LDA,<"LDA">     ; Load accumulator mnemonic
  524.     Mnemonic    LDX,<"LDX">     ; Load X register mnemonic
  525.     Mnemonic    LDY,<"LDY">     ; Load Y register mnemonic
  526.     Mnemonic    LSR,<"LSR">     ; Logical shift right mnemonic
  527.     Mnemonic    NOP,<"NOP">     ; No operation mnemonic
  528.     Mnemonic    ORA,<"ORA">     ; OR with accumulator mnemonic
  529.     Mnemonic    PHA,<"PHA">     ; Push accumulator mnemonic
  530.     Mnemonic    PHP,<"PHP">     ; Push processor status mnemonic
  531.     Mnemonic    PHX,<"PHX">     ; Push X register mnemonic
  532.     Mnemonic    PHY,<"PHY">     ; Push Y register mnemonic
  533.     Mnemonic    PLA,<"PLA">     ; Pull accumulator mnemonic
  534.     Mnemonic    PLP,<"PLP">     ; Pull processor status mnemonic
  535.     Mnemonic    PLX,<"PLX">     ; Pull X register mnemonic
  536.     Mnemonic    PLY,<"PLY">     ; Pull Y register mnemonic
  537.     Mnemonic    ROL,<"ROL">     ; Rotate left mnemonic
  538.     Mnemonic    ROR,<"ROR">     ; Rotate right mnemonic
  539.     Mnemonic    RTI,<"RTI">     ; Return from interrupt mnemonic
  540.     Mnemonic    RTS,<"RTS">     ; Return from subroutine mnemonic
  541.     Mnemonic    SBC,<"SBC">     ; Subtract with borrow mnemonic
  542.     Mnemonic    SEC,<"SEC">     ; Set carry mnemonic
  543.     Mnemonic    SED,<"SED">     ; Set decimal mode mnemonic
  544.     Mnemonic    SEI,<"SEI">     ; Set interrupt disable mnemonic
  545.     Mnemonic    STA,<"STA">     ; Store accumulator mnemonic
  546.     Mnemonic    STX,<"STX">     ; Store X register mnemonic
  547.     Mnemonic    STY,<"STY">     ; Store Y register mnemonic
  548.     Mnemonic    STZ,<"STZ">     ; Store zero mnemonic
  549.     Mnemonic    TAX,<"TAX">     ; Transfer acc. to X mnemonic
  550.     Mnemonic    TAY,<"TAY">     ; Transfer acc. to Y mnemonic
  551.     Mnemonic    TRB,<"TRB">     ; Test/reset bits mnemonic
  552.     Mnemonic    TSB,<"TSB">     ; Test/set bits mnemonic
  553.     Mnemonic    TSX,<"TSX">     ; Transfer stack to X mnemonic
  554.     Mnemonic    TXA,<"TXA">     ; Transfer X to acc. mnemonic
  555.     Mnemonic    TXS,<"TXS">     ; Transfer X to stack mnemonic
  556.     Mnemonic    TYA,<"TYA">     ; Transfer Y to acc. mnemonic
  557. ;******************************************************************************
  558. ;
  559. ;    Define the 65C02 debugger opcode data table
  560. ;
  561. ;******************************************************************************
  562.     Even                ; Force table to an even address
  563. Opcode_Table    Equ    This Byte    ; 65C02 Opcode data table
  564.     Opcode    <OP_BRK,TYPE_NONE>    ; Opcode 00h - Software break
  565.     Opcode    <OP_ORA,TYPE_DIIX>    ; Opcode 01h - OR accumulator w/memory
  566.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 02h - Illegal opcode
  567.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 03h - Illegal opcode
  568.     Opcode    <OP_TSB,TYPE_DP>    ; Opcode 04h - Test/set bits w/acc.
  569.     Opcode    <OP_ORA,TYPE_DP>    ; Opcode 05h - OR accumulator w/memory
  570.     Opcode    <OP_ASL,TYPE_DP>    ; Opcode 06h - Shift memory/acc. left
  571.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 07h - Illegal opcode
  572.     Opcode    <OP_PHP,TYPE_NONE>    ; Opcode 08h - Push processor status
  573.     Opcode    <OP_ORA,TYPE_IMM>    ; Opcode 09h - OR accumulator w/memory
  574.     Opcode    <OP_ASL,TYPE_NONE>    ; Opcode 0Ah - Shift memory/acc. left
  575.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 0Bh - Illegal opcode
  576.     Opcode    <OP_TSB,TYPE_ABS>    ; Opcode 0Ch - Test/set bits w/acc.
  577.     Opcode    <OP_ORA,TYPE_ABS>    ; Opcode 0Dh - OR accumulator w/memory
  578.     Opcode    <OP_ASL,TYPE_ABS>    ; Opcode 0Eh - Shift memory/acc. left
  579.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 0Fh - Illegal opcode
  580.     Opcode    <OP_BPL,TYPE_PCR>    ; Opcode 10h - Branch if plus
  581.     Opcode    <OP_ORA,TYPE_DIIY>    ; Opcode 11h - OR accumulator w/memory
  582.     Opcode    <OP_ORA,TYPE_DI>    ; Opcode 12h - OR accumulator w/memory
  583.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 13h - Illegal opcode
  584.     Opcode    <OP_TRB,TYPE_DP>    ; Opcode 14h - Test/reset bits w/acc.
  585.     Opcode    <OP_ORA,TYPE_DIX>    ; Opcode 15h - OR accumulator w/memory
  586.     Opcode    <OP_ASL,TYPE_DIX>    ; Opcode 16h - Shift memory/acc. left
  587.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 17h - Illegal opcode
  588.     Opcode    <OP_CLC,TYPE_NONE>    ; Opcode 18h - Clear carry
  589.     Opcode    <OP_ORA,TYPE_AIY>    ; Opcode 19h - OR accumulator w/memory
  590.     Opcode    <OP_INC,TYPE_NONE>    ; Opcode 1Ah - Increment
  591.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 1Bh - Illegal opcode
  592.     Opcode    <OP_TRB,TYPE_ABS>    ; Opcode 1Ch - Test/reset bits w/acc.
  593.     Opcode    <OP_ORA,TYPE_AIX>    ; Opcode 1Dh - OR accumulator w/memory
  594.     Opcode    <OP_ASL,TYPE_AIX>    ; Opcode 1Eh - Shift memory/acc. left
  595.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 1Fh - Illegal opcode
  596.     Opcode    <OP_JSR,TYPE_ABS>    ; Opcode 20h - Jump to subroutine
  597.     Opcode    <OP_AND,TYPE_DIIX>    ; Opcode 21h - AND accumulator w/memory
  598.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 22h - Illegal opcode
  599.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 23h - Illegal opcode
  600.     Opcode    <OP_BIT,TYPE_DP>    ; Opcode 24h - Test bits w/accumulator
  601.     Opcode    <OP_AND,TYPE_DP>    ; Opcode 25h - AND accumulator w/memory
  602.     Opcode    <OP_ROL,TYPE_DP>    ; Opcode 26h - Rotate memory/acc. left
  603.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 27h - Illegal opcode
  604.     Opcode    <OP_PLP,TYPE_NONE>    ; Opcode 28h - Pull processor status
  605.     Opcode    <OP_AND,TYPE_IMM>    ; Opcode 29h - AND accumulator w/memory
  606.     Opcode    <OP_ROL,TYPE_NONE>    ; Opcode 2Ah - Rotate memory/acc. left
  607.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 2Bh - Illegal opcode
  608.     Opcode    <OP_BIT,TYPE_ABS>    ; Opcode 2Ch - Test bits w/accumulator
  609.     Opcode    <OP_AND,TYPE_ABS>    ; Opcode 2Dh - AND accumulator w/memory
  610.     Opcode    <OP_ROL,TYPE_ABS>    ; Opcode 2Eh - Rotate memory/acc. left
  611.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 2Fh - Illegal opcode
  612.     Opcode    <OP_BMI,TYPE_PCR>    ; Opcode 30h - Branch if minus
  613.     Opcode    <OP_AND,TYPE_DIIY>    ; Opcode 31h - AND accumulator w/memory
  614.     Opcode    <OP_AND,TYPE_DI>    ; Opcode 32h - AND accumulator w/memory
  615.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 33h - Illegal opcode
  616.     Opcode    <OP_BIT,TYPE_DIX>    ; Opcode 34h - Test bits w/accumulator
  617.     Opcode    <OP_AND,TYPE_DIX>    ; Opcode 35h - AND accumulator w/memory
  618.     Opcode    <OP_ROL,TYPE_DIX>    ; Opcode 36h - Rotate memory/acc. left
  619.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 37h - Illegal opcode
  620.     Opcode    <OP_SEC,TYPE_NONE>    ; Opcode 38h - Set carry
  621.     Opcode    <OP_AND,TYPE_AIY>    ; Opcode 39h - AND accumulator w/memory
  622.     Opcode    <OP_DEC,TYPE_NONE>    ; Opcode 3Ah - Decrement
  623.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 3Bh - Illegal opcode
  624.     Opcode    <OP_BIT,TYPE_AIX>    ; Opcode 3Ch - Test bits w/accumulator
  625.     Opcode    <OP_AND,TYPE_AIX>    ; Opcode 3Dh - AND accumulator w/memory
  626.     Opcode    <OP_ROL,TYPE_AIX>    ; Opcode 3Eh - Rotate memory/acc. left
  627.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 3Fh - Illegal opcode
  628.     Opcode    <OP_RTI,TYPE_NONE>    ; Opcode 40h - Return from interrupt
  629.     Opcode    <OP_EOR,TYPE_DIIX>    ; Opcode 41h - XOR accumulator w/memory
  630.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 42h - Illegal opcode
  631.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 43h - Illegal opcode
  632.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 44h - Illegal opcode
  633.     Opcode    <OP_EOR,TYPE_DP>    ; Opcode 45h - XOR accumulator w/memory
  634.     Opcode    <OP_LSR,TYPE_DP>    ; Opcode 46h - Logical shift right
  635.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 47h - Illegal opcode
  636.     Opcode    <OP_PHA,TYPE_NONE>    ; Opcode 48h - Push accumulator
  637.     Opcode    <OP_EOR,TYPE_IMM>    ; Opcode 49h - XOR accumulator w/memory
  638.     Opcode    <OP_LSR,TYPE_NONE>    ; Opcode 4Ah - Logical shift right
  639.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 4Bh - Illegal opcode
  640.     Opcode    <OP_JMP,TYPE_ABS>    ; Opcode 4Ch - Jump
  641.     Opcode    <OP_EOR,TYPE_ABS>    ; Opcode 4Dh - XOR accumulator w/memory
  642.     Opcode    <OP_LSR,TYPE_ABS>    ; Opcode 4Eh - Logical shift right
  643.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 4Fh - Illegal opcode
  644.     Opcode    <OP_BVC,TYPE_PCR>    ; Opcode 50h - Branch if overflow clear
  645.     Opcode    <OP_EOR,TYPE_DIIY>    ; Opcode 51h - XOR accumulator w/memory
  646.     Opcode    <OP_EOR,TYPE_DI>    ; Opcode 52h - XOR accumulator w/memory
  647.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 53h - Illegal opcode
  648.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 54h - Illegal opcode
  649.     Opcode    <OP_EOR,TYPE_DIX>    ; Opcode 55h - XOR accumulator w/memory
  650.     Opcode    <OP_LSR,TYPE_DIX>    ; Opcode 56h - Logical shift right
  651.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 57h - Illegal opcode
  652.     Opcode    <OP_CLI,TYPE_NONE>    ; Opcode 58h - Clear interrupt disable
  653.     Opcode    <OP_EOR,TYPE_AIY>    ; Opcode 59h - XOR accumulator w/memory
  654.     Opcode    <OP_PHY,TYPE_NONE>    ; Opcode 5Ah - Push Y index register
  655.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 5Bh - Illegal opcode
  656.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 5Ch - Illegal opcode
  657.     Opcode    <OP_EOR,TYPE_AIX>    ; Opcode 5Dh - XOR accumulator w/memory
  658.     Opcode    <OP_LSR,TYPE_AIX>    ; Opcode 5Eh - Logical shift right
  659.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 5Fh - Illegal opcode
  660.     Opcode    <OP_RTS,TYPE_NONE>    ; Opcode 60h - Return from subroutine
  661.     Opcode    <OP_ADC,TYPE_DIIX>    ; Opcode 61h - Add with carry
  662.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 62h - Illegal opcode
  663.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 63h - Illegal opcode
  664.     Opcode    <OP_STZ,TYPE_DP>    ; Opcode 64h - Store zero to memory
  665.     Opcode    <OP_ADC,TYPE_DP>    ; Opcode 65h - Add with carry
  666.     Opcode    <OP_ROR,TYPE_DP>    ; Opcode 66h - Rotate memory/acc. right
  667.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 67h - Illegal opcode
  668.     Opcode    <OP_PLA,TYPE_NONE>    ; Opcode 68h - Pull accumulator
  669.     Opcode    <OP_ADC,TYPE_IMM>    ; Opcode 69h - Add with carry
  670.     Opcode    <OP_ROR,TYPE_NONE>    ; Opcode 6Ah - Rotate memory/acc. right
  671.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 6Bh - Illegal opcode
  672.     Opcode    <OP_JMP,TYPE_AI>    ; Opcode 6Ch - Jump
  673.     Opcode    <OP_ADC,TYPE_ABS>    ; Opcode 6Dh - Add with carry
  674.     Opcode    <OP_ROR,TYPE_ABS>    ; Opcode 6Eh - Rotate memory/acc. right
  675.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 6Fh - Illegal opcode
  676.     Opcode    <OP_BVS,TYPE_PCR>    ; Opcode 70h - Branch if overflow set
  677.     Opcode    <OP_ADC,TYPE_DIIY>    ; Opcode 71h - Add with carry
  678.     Opcode    <OP_ADC,TYPE_DI>    ; Opcode 72h - Add with carry
  679.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 73h - Illegal opcode
  680.     Opcode    <OP_STZ,TYPE_DIX>    ; Opcode 74h - Store zero to memory
  681.     Opcode    <OP_ADC,TYPE_DIX>    ; Opcode 75h - Add with carry
  682.     Opcode    <OP_ROR,TYPE_DIX>    ; Opcode 76h - Rotate memory/acc. right
  683.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 77h - Illegal opcode
  684.     Opcode    <OP_SEI,TYPE_NONE>    ; Opcode 78h - Set interrupt disable
  685.     Opcode    <OP_ADC,TYPE_AIY>    ; Opcode 79h - Add with carry
  686.     Opcode    <OP_PLY,TYPE_NONE>    ; Opcode 7Ah - Pull Y index register
  687.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 7Bh - Illegal opcode
  688.     Opcode    <OP_JMP,TYPE_AIIX>    ; Opcode 7Ch - Jump
  689.     Opcode    <OP_ADC,TYPE_AIX>    ; Opcode 7Dh - Add with carry
  690.     Opcode    <OP_ROR,TYPE_AIX>    ; Opcode 7Eh - Rotate memory/acc. right
  691.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 7Fh - Illegal opcode
  692.     Opcode    <OP_BRA,TYPE_PCR>    ; Opcode 80h - Branch always
  693.     Opcode    <OP_STA,TYPE_DIIX>    ; Opcode 81h - Store accumulator
  694.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 82h - Illegal opcode
  695.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 83h - Illegal opcode
  696.     Opcode    <OP_STY,TYPE_DP>    ; Opcode 84h - Store Y index register
  697.     Opcode    <OP_STA,TYPE_DP>    ; Opcode 85h - Store accumulator
  698.     Opcode    <OP_STX,TYPE_DP>    ; Opcode 86h - Store X index register
  699.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 87h - Illegal opcode
  700.     Opcode    <OP_DEY,TYPE_NONE>    ; Opcode 88h - Decrement Y register
  701.     Opcode    <OP_BIT,TYPE_IMM>    ; Opcode 89h - Test bits w/accumulator
  702.     Opcode    <OP_TXA,TYPE_NONE>    ; Opcode 8Ah - Transfer X reg. to acc.
  703.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 8Bh - Illegal opcode
  704.     Opcode    <OP_STY,TYPE_ABS>    ; Opcode 8Ch - Store Y index register
  705.     Opcode    <OP_STA,TYPE_ABS>    ; Opcode 8Dh - Store accumulator
  706.     Opcode    <OP_STX,TYPE_ABS>    ; Opcode 8Eh - Store X index register
  707.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 8Fh - Illegal opcode
  708.     Opcode    <OP_BCC,TYPE_PCR>    ; Opcode 90h - Branch if carry clear
  709.     Opcode    <OP_STA,TYPE_DIIY>    ; Opcode 91h - Store accumulator
  710.     Opcode    <OP_STA,TYPE_DI>    ; Opcode 92h - Store accumulator
  711.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 93h - Illegal opcode
  712.     Opcode    <OP_STY,TYPE_DIX>    ; Opcode 94h - Store Y index register
  713.     Opcode    <OP_STA,TYPE_DIX>    ; Opcode 95h - Store accumulator
  714.     Opcode    <OP_STX,TYPE_DIX>    ; Opcode 96h - Store X index register
  715.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 97h - Illegal opcode
  716.     Opcode    <OP_TYA,TYPE_NONE>    ; Opcode 98h - Transfer Y reg. to acc.
  717.     Opcode    <OP_STA,TYPE_AIY>    ; Opcode 99h - Store accumulator
  718.     Opcode    <OP_TXS,TYPE_NONE>    ; Opcode 9Ah - Transfer X reg. to stack
  719.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 9Bh - Illegal opcode
  720.     Opcode    <OP_STZ,TYPE_ABS>    ; Opcode 9Ch - Store zero to memory
  721.     Opcode    <OP_STA,TYPE_AIX>    ; Opcode 9Dh - Store accumulator
  722.     Opcode    <OP_STZ,TYPE_AIX>    ; Opcode 9Eh - Store zero to memory
  723.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode 9Fh - Illegal opcode
  724.     Opcode    <OP_LDY,TYPE_IMM>    ; Opcode A0h - Load Y register w/memory
  725.     Opcode    <OP_LDA,TYPE_DIIX>    ; Opcode A1h - Load accumulator w/memory
  726.     Opcode    <OP_LDX,TYPE_IMM>    ; Opcode A2h - Load X register w/memory
  727.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode A3h - Illegal opcode
  728.     Opcode    <OP_LDY,TYPE_DP>    ; Opcode A4h - Load Y register w/memory
  729.     Opcode    <OP_LDA,TYPE_DP>    ; Opcode A5h - Load accumulator w/memory
  730.     Opcode    <OP_LDX,TYPE_DP>    ; Opcode A6h - Load X register w/memory
  731.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode A7h - Illegal opcode
  732.     Opcode    <OP_TAY,TYPE_NONE>    ; Opcode A8h - Transfer acc. to Y reg.
  733.     Opcode    <OP_LDA,TYPE_IMM>    ; Opcode A9h - Load accumulator w/memory
  734.     Opcode    <OP_TAX,TYPE_NONE>    ; Opcode AAh - Transfer acc. to X reg.
  735.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode ABh - Illegal opcode
  736.     Opcode    <OP_LDY,TYPE_ABS>    ; Opcode ACh - Load Y register w/memory
  737.     Opcode    <OP_LDA,TYPE_ABS>    ; Opcode ADh - Load accumulator w/memory
  738.     Opcode    <OP_LDX,TYPE_ABS>    ; Opcode AEh - Load X register w/memory
  739.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode AFh - Illegal opcode
  740.     Opcode    <OP_BCS,TYPE_PCR>    ; Opcode B0h - Branch if carry set
  741.     Opcode    <OP_LDA,TYPE_DIIY>    ; Opcode B1h - Load accumulator w/memory
  742.     Opcode    <OP_LDA,TYPE_DI>    ; Opcode B2h - Load accumulator w/memory
  743.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode B3h - Illegal opcode
  744.     Opcode    <OP_LDY,TYPE_DIX>    ; Opcode B4h - Load Y register w/memory
  745.     Opcode    <OP_LDA,TYPE_DIX>    ; Opcode B5h - Load accumulator w/memory
  746.     Opcode    <OP_LDX,TYPE_DIY>    ; Opcode B6h - Load X register w/memory
  747.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode B7h - Illegal opcode
  748.     Opcode    <OP_CLV,TYPE_NONE>    ; Opcode B8h - Clear overflow
  749.     Opcode    <OP_LDA,TYPE_AIY>    ; Opcode B9h - Load accumulator w/memory
  750.     Opcode    <OP_TSX,TYPE_NONE>    ; Opcode BAh - Transfer stack to X reg.
  751.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode BBh - Illegal opcode
  752.     Opcode    <OP_LDY,TYPE_AIX>    ; Opcode BCh - Load Y register w/memory
  753.     Opcode    <OP_LDA,TYPE_AIX>    ; Opcode BDh - Load accumulator w/memory
  754.     Opcode    <OP_LDX,TYPE_AIY>    ; Opcode BEh - Load X register w/memory
  755.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode BFh - Illegal opcode
  756.     Opcode    <OP_CPY,TYPE_IMM>    ; Opcode C0h - Compare Y reg. w/memory
  757.     Opcode    <OP_CMP,TYPE_DIIX>    ; Opcode C1h - Compare memory w/acc.
  758.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode C2h - Illegal opcode
  759.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode C3h - Illegal opcode
  760.     Opcode    <OP_CPY,TYPE_DP>    ; Opcode C4h - Compare Y reg. w/memory
  761.     Opcode    <OP_CMP,TYPE_DP>    ; Opcode C5h - Compare memory w/acc.
  762.     Opcode    <OP_DEC,TYPE_DP>    ; Opcode C6h - Decrement
  763.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode C7h - Illegal opcode
  764.     Opcode    <OP_INY,TYPE_NONE>    ; Opcode C8h - Increment Y register
  765.     Opcode    <OP_CMP,TYPE_IMM>    ; Opcode C9h - Compare memory w/acc.
  766.     Opcode    <OP_DEX,TYPE_NONE>    ; Opcode CAh - Decrement X register
  767.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode CBh - Illegal opcode
  768.     Opcode    <OP_CPY,TYPE_ABS>    ; Opcode CCh - Compare Y reg. w/memory
  769.     Opcode    <OP_CMP,TYPE_ABS>    ; Opcode CDh - Compare memory w/acc.
  770.     Opcode    <OP_DEC,TYPE_ABS>    ; Opcode CEh - Decrement
  771.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode CFh - Illegal opcode
  772.     Opcode    <OP_BNE,TYPE_PCR>    ; Opcode D0h - Branch if not equal
  773.     Opcode    <OP_CMP,TYPE_DIIY>    ; Opcode D1h - Compare memory w/acc.
  774.     Opcode    <OP_CMP,TYPE_DI>    ; Opcode D2h - Compare memory w/acc.
  775.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode D3h - Illegal opcode
  776.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode D4h - Illegal opcode
  777.     Opcode    <OP_CMP,TYPE_DIX>    ; Opcode D5h - Compare memory w/acc.
  778.     Opcode    <OP_DEC,TYPE_DIX>    ; Opcode D6h - Decrement
  779.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode D7h - Illegal opcode
  780.     Opcode    <OP_CLD,TYPE_NONE>    ; Opcode D8h - Clear decimal mode
  781.     Opcode    <OP_CMP,TYPE_AIY>    ; Opcode D9h - Compare memory w/acc.
  782.     Opcode    <OP_PHX,TYPE_NONE>    ; Opcode DAh - Push X index register
  783.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode DBh - Illegal opcode
  784.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode DCh - Illegal opcode
  785.     Opcode    <OP_CMP,TYPE_AIX>    ; Opcode DDh - Compare memory w/acc.
  786.     Opcode    <OP_DEC,TYPE_AIX>    ; Opcode DEh - Decrement
  787.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode DFh - Illegal opcode
  788.     Opcode    <OP_CPX,TYPE_IMM>    ; Opcode E0h - Compare X reg. w/memory
  789.     Opcode    <OP_SBC,TYPE_DIIX>    ; Opcode E1h - Subtract from accumulator
  790.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode E2h - Illegal opcode
  791.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode E3h - Illegal opcode
  792.     Opcode    <OP_CPX,TYPE_DP>    ; Opcode E4h - Compare X reg. w/memory
  793.     Opcode    <OP_SBC,TYPE_DP>    ; Opcode E5h - Subtract from accumulator
  794.     Opcode    <OP_INC,TYPE_DP>    ; Opcode E6h - Increment
  795.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode E7h - Illegal opcode
  796.     Opcode    <OP_INX,TYPE_NONE>    ; Opcode E8h - Increment X register
  797.     Opcode    <OP_SBC,TYPE_IMM>    ; Opcode E9h - Subtract from accumulator
  798.     Opcode    <OP_NOP,TYPE_NONE>    ; Opcode EAh - No operation
  799.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode EBh - Illegal opcode
  800.     Opcode    <OP_CPX,TYPE_ABS>    ; Opcode ECh - Compare X reg. w/memory
  801.     Opcode    <OP_SBC,TYPE_ABS>    ; Opcode EDh - Subtract from accumulator
  802.     Opcode    <OP_INC,TYPE_ABS>    ; Opcode EEh - Increment
  803.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode EFh - Illegal opcode
  804.     Opcode    <OP_BEQ,TYPE_PCR>    ; Opcode F0h - Branch if equal
  805.     Opcode    <OP_SBC,TYPE_DIIY>    ; Opcode F1h - Subtract from accumulator
  806.     Opcode    <OP_SBC,TYPE_DI>    ; Opcode F2h - Subtract from accumulator
  807.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode F3h - Illegal opcode
  808.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode F4h - Illegal opcode
  809.     Opcode    <OP_SBC,TYPE_DIX>    ; Opcode F5h - Subtract from accumulator
  810.     Opcode    <OP_INC,TYPE_DIX>    ; Opcode F6h - Increment
  811.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode F7h - Illegal opcode
  812.     Opcode    <OP_SED,TYPE_NONE>    ; Opcode F8h - Set decimal mode
  813.     Opcode    <OP_SBC,TYPE_AIY>    ; Opcode F9h - Subtract from accumulator
  814.     Opcode    <OP_PLX,TYPE_NONE>    ; Opcode FAh - Pull X index register
  815.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode FBh - Illegal opcode
  816.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode FCh - Illegal opcode
  817.     Opcode    <OP_SBC,TYPE_AIX>    ; Opcode FDh - Subtract from accumulator
  818.     Opcode    <OP_INC,TYPE_AIX>    ; Opcode FEh - Increment
  819.     Opcode    <OP_BAD,TYPE_BAD>    ; Opcode FFh - Illegal opcode
  820. ;******************************************************************************
  821. ;
  822. ;    Define the end of the Emulator Code Segment
  823. ;
  824. ;******************************************************************************
  825. Emulate Ends
  826.     End                ; End of the Debug module
  827.